Add optional bl1_plat_prepare_exit() API
authorJuan Castillo <[email protected]>
Mon, 5 Oct 2015 15:59:38 +0000 (16:59 +0100)
committerJuan Castillo <[email protected]>
Tue, 20 Oct 2015 15:53:53 +0000 (16:53 +0100)
This patch adds an optional API to the platform port:

    void bl1_plat_prepare_exit(void);

This function is called prior to exiting BL1 in response to the
RUN_IMAGE_SMC request raised by BL2. It should be used to perform
platform specific clean up or bookkeeping operations before
transferring control to the next image.

A weak empty definition of this function has been provided to
preserve platform backwards compatibility.

Change-Id: Iec09697de5c449ae84601403795cdb6aca166ba1

bl1/aarch64/bl1_exceptions.S
docs/porting-guide.md
plat/common/aarch64/platform_helpers.S

index ca86107c57c87784b5b697d12ef9e9901f0df0af..ef390d46fe987356226dce8da89c0fc53eeec3ad 100644 (file)
@@ -207,6 +207,8 @@ func smc_handler64
        bl      disable_mmu_icache_el3
        tlbi    alle3
 
+       bl      bl1_plat_prepare_exit
+
        ldp     x6, x7, [x20, #(ENTRY_POINT_INFO_ARGS_OFFSET + 0x30)]
        ldp     x4, x5, [x20, #(ENTRY_POINT_INFO_ARGS_OFFSET + 0x20)]
        ldp     x2, x3, [x20, #(ENTRY_POINT_INFO_ARGS_OFFSET + 0x10)]
index 50d36ea27d2d0059308988d1a5b8d9c3bbdd99f7..c369844ce803da9a4414fbf5355e4a210feaa3b7 100644 (file)
@@ -788,6 +788,17 @@ the entry point set by loader and also set the security state and SPSR which
 represents the entry point system state for BL2.
 
 
+### Function : bl1_plat_prepare_exit() [optional]
+
+    Argument : void
+    Return   : void
+
+This function is called prior to exiting BL1 in response to the `RUN_IMAGE_SMC`
+request raised by BL2. It should be used to perform platform specific clean up
+or bookkeeping operations before transferring control to the next image. This
+function runs with MMU disabled.
+
+
 3.2 Boot Loader Stage 2 (BL2)
 -----------------------------
 
index 9f4b672ab8c7de4ec50466ec36d673108f6d1012..f51d24e6d12f8d18302b07137ec0e091a85c8f0b 100644 (file)
@@ -37,6 +37,7 @@
        .weak   plat_crash_console_putc
        .weak   plat_reset_handler
        .weak   plat_disable_acp
+       .weak   bl1_plat_prepare_exit
 
 #if !ENABLE_PLAT_COMPAT
        .globl  platform_get_core_pos
@@ -111,3 +112,12 @@ endfunc plat_reset_handler
 func plat_disable_acp
        ret
 endfunc plat_disable_acp
+
+       /* -----------------------------------------------------
+        * void bl1_plat_prepare_exit(void);
+        * Called before exiting BL1. Default: do nothing
+        * -----------------------------------------------------
+        */
+func bl1_plat_prepare_exit
+       ret
+endfunc bl1_plat_prepare_exit